# This file is part of The Vu Toolkit.
#
# The Vu Toolkit is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 3.0 of the License, or (at your option) any later version.
#
# The Vu Toolkit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with The Vu Toolkit; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.
#
# Copyright © Zak Fenton 2008
#

module Vu::SVG
	# Base class for types of "paint" used to fill or stroke shapes.
	class Paint
		# Applies the paint to the given cairo context
		def apply_to_cairo (cr)
			
		end
		
		# Parse a colour/paint
		def self.parse (t)
			case t
				when 'red'
					Colour.Red
				when 'blue'
					Colour.Blue
				when 'green'
					Colour.Green
				when 'purple'
					Colour.Purple
			end
		end
	end
	
	# A solid colour.
	class Colour < Paint
		def self.Red
			RGB.new(1,0,0)
		end
		
		def self.Green
			RGB.new(0,0.5,0)
		end
		
		def self.Blue
			RGB.new(0,0,1)
		end
		
		def self.Purple
			RGB.new(0.5,0,0.5)
		end
	end
	
	# An RGB colour (with an optional Alpha component)
	class RGB < Colour
		# Create an RGB, with optional alpha value
		def initialize (r,g,b,a=1)
			@r=r
			@g=g
			@b=b
			@a=a
		end
		
		def apply_to_cairo (cr)
			cr.set_source_rgba(@r,@g,@b,@a)
		end
	end
end

